package br.com.aspas.beans;

import br.com.aspas.modelo.PessoaFisica;
import br.com.aspas.modelo.PessoaFisicaJuridicaEvento;
import br.com.aspas.modelo.Portaria;
import br.com.aspas.modelo.StatusSaida;
import br.com.aspas.persistencia.PessoaFisicaDao;
import br.com.aspas.persistencia.PessoaFisicaJuridicaEventoDao;
import br.com.aspas.persistencia.PortariaDao;
import br.com.aspas.persistencia.StatusSaidaDao;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ColetorServlet extends HttpServlet {



    
    private Portaria portaria;
    private PessoaFisicaJuridicaEvento pessoaFisicaJuridicaEvento;
    private PessoaFisica pessoaFisica;
    private PessoaFisicaDao pessoaFisicaDao;
    private StatusSaida statusSaida;
    private String valorBusca;
    private PortariaDao portariaDao;
    private StatusSaidaDao statusSaidaDao;
    private String empresa;
    private PessoaFisicaJuridicaEventoDao pessoaFisicaJuridicaEventoDao;

    public ColetorServlet() {
        pessoaFisica = new PessoaFisica();
        pessoaFisicaDao = new PessoaFisicaDao();
        pessoaFisicaJuridicaEvento = new PessoaFisicaJuridicaEvento();
        statusSaida = new StatusSaida();
        portariaDao = new PortariaDao();
        statusSaidaDao = new StatusSaidaDao();
        pessoaFisicaJuridicaEventoDao = new PessoaFisicaJuridicaEventoDao();
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String param = request.getParameter("campoBusca");
        portaria = new Portaria();

        valorBusca = param;
        if (valorBusca.length() > 11) {
            String valor = valorBusca.substring(1, 11);
            Portaria port = new Portaria();
            pessoaFisica = pessoaFisicaDao.findByPk(Integer.parseInt(valor));
            empresa = pessoaFisicaJuridicaEventoDao.findPFPJEmpresa(Integer.parseInt(valor));
            //request.setAttribute("nomeCracha", pessoaFisica.getNomeCracha());
            request.setAttribute("empresa", empresa);

            if (pessoaFisica != null) {
                port = portariaDao.findPortariaPf(Integer.parseInt(valor));
                if (port == null) {
                    String mensagemEntrada = "Participante Sem Registro de Entrada!!";
                    request.setAttribute("mensagemEntrada", mensagemEntrada);
                    port = new Portaria();
                } else if (port.getStatusSaida().getCodigo() == 1) {
                    statusSaida = statusSaidaDao.findByPk(1);
                    String mensagemControle = "Volte Sempre!!";

                    statusSaida = statusSaidaDao.findByPk(2);
                    portaria.setPessoaFisica(pessoaFisica);
                    portaria.setStatusSaida(statusSaida);
                    portariaDao.inserir(portaria);
                    request.setAttribute("mensagemEntrada", mensagemControle);
                } else if (port.getStatusSaida().getCodigo() == 2) {
                    String mensagemEntrada = "Volte Sempre!!";
                    request.setAttribute("mensagemEntrada", mensagemEntrada);
                    port = new Portaria();
                }
                request.setAttribute("status", statusSaida.getNome());
                RequestDispatcher dispatcher3 = request.getRequestDispatcher("/jsp/portaria/portariaMobileSaida.jsp");
                dispatcher3.forward(request, response);
            }
        } else {
            String mensagemPartNaoEncontrado = "Participante Não Encontrado!!";
            request.setAttribute("mensagemEntrada", mensagemPartNaoEncontrado);
            RequestDispatcher dispatcher4 = request.getRequestDispatcher("/jsp/portaria/portariaMobileSaida.jsp");
            dispatcher4.forward(request, response);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String param = request.getParameter("campoBusca");
        portaria = new Portaria();

        valorBusca = param;
        if (valorBusca.length() > 11) {

            String valor ="";
            if (valorBusca.length()==13){
                valor = valorBusca.substring(1, 12);
            }else if (valorBusca.length()==12){
                valor = valorBusca.substring(1, 11);
            }else {
                valor = valorBusca.substring(1, 11);
            }

            Portaria port = new Portaria();
            pessoaFisica = pessoaFisicaDao.findByPk(Integer.parseInt(valor));
            empresa = pessoaFisicaJuridicaEventoDao.findPFPJEmpresa(Integer.parseInt(valor));
            //request.setAttribute("nomeCracha", pessoaFisica.getNomeCracha());
            request.setAttribute("empresa", empresa);
            if (pessoaFisica != null) {
                port = portariaDao.findPortariaPf(Integer.parseInt(valor));
                if (port == null) {
                    statusSaida = statusSaidaDao.findByPk(1);
                    portaria.setPessoaFisica(pessoaFisica);
                    portaria.setStatusSaida(statusSaida);
                    portariaDao.inserir(portaria);
                    String mensagemEntrada = "Seja Bem Vindo!!";
                    request.setAttribute("mensagemEntrada", mensagemEntrada);
                    port = new Portaria();
                } else if (port.getStatusSaida().getCodigo() == 1) {
                    statusSaida = statusSaidaDao.findByPk(1);
                    String mensagemControle = "PARTICIPANTE ENCONTRA-SE NO EVENTO!!";
                    request.setAttribute("mensagemErro", mensagemControle);

                } else if (port.getStatusSaida().getCodigo() == 2) {
                    statusSaida = statusSaidaDao.findByPk(1);
                    portaria.setPessoaFisica(pessoaFisica);
                    portaria.setStatusSaida(statusSaida);
                    portariaDao.inserir(portaria);

                    String mensagemEntrada = "Seja Bem Vindo!!";
                    request.setAttribute("mensagemEntrada", mensagemEntrada);
                    port = new Portaria();
                }
                request.setAttribute("status", statusSaida.getNome());
                RequestDispatcher dispatcher3 = request.getRequestDispatcher("/jsp/portaria/portariaMobileEntrada.jsp");
                dispatcher3.forward(request, response);
            } else {
                String mensagemPartNaoEncontrado = "Participante Não Encontrado!!";
                request.setAttribute("mensagemEntrada", mensagemPartNaoEncontrado);
                RequestDispatcher dispatcher4 = request.getRequestDispatcher("/jsp/portaria/portariaMobileEntrada.jsp");
                dispatcher4.forward(request, response);
            }
        }
    }
}
